// Virtual non-copyable base class
class Base {
public:
	Base() {}
	virtual ~Base() {}
private:
	Base(const Base&);
	Base& operator=(const Base&);
};